#ifndef KONAN_LIBMYTEST_OHOS_H
#define KONAN_LIBMYTEST_OHOS_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
typedef bool            libmytest_ohos_KBoolean;
#else
typedef _Bool           libmytest_ohos_KBoolean;
#endif
typedef unsigned short     libmytest_ohos_KChar;
typedef signed char        libmytest_ohos_KByte;
typedef short              libmytest_ohos_KShort;
typedef int                libmytest_ohos_KInt;
typedef long long          libmytest_ohos_KLong;
typedef unsigned char      libmytest_ohos_KUByte;
typedef unsigned short     libmytest_ohos_KUShort;
typedef unsigned int       libmytest_ohos_KUInt;
typedef unsigned long long libmytest_ohos_KULong;
typedef float              libmytest_ohos_KFloat;
typedef double             libmytest_ohos_KDouble;
typedef float __attribute__ ((__vector_size__ (16))) libmytest_ohos_KVector128;
typedef void*              libmytest_ohos_KNativePtr;
struct libmytest_ohos_KType;
typedef struct libmytest_ohos_KType libmytest_ohos_KType;

typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Byte;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Short;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Int;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Long;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Float;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Double;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Char;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Boolean;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Unit;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_UByte;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_UShort;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_UInt;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_ULong;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_com_example_kotlin_library_Person;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_kotlin_Any;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_com_example_kotlin_library_PersonInfo;
typedef struct {
  libmytest_ohos_KNativePtr pinned;
} libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory;

extern libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult create_heif_image_kotlin(libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory thiz, const char* filePath, libmytest_ohos_KFloat width, libmytest_ohos_KFloat height);
extern void destroy_heif_image_kotlin(libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory thiz, libmytest_ohos_KLong handle);

typedef struct {
  /* Service functions. */
  void (*DisposeStablePointer)(libmytest_ohos_KNativePtr ptr);
  void (*DisposeString)(const char* string);
  libmytest_ohos_KBoolean (*IsInstance)(libmytest_ohos_KNativePtr ref, const libmytest_ohos_KType* type);
  libmytest_ohos_kref_kotlin_Byte (*createNullableByte)(libmytest_ohos_KByte);
  libmytest_ohos_KByte (*getNonNullValueOfByte)(libmytest_ohos_kref_kotlin_Byte);
  libmytest_ohos_kref_kotlin_Short (*createNullableShort)(libmytest_ohos_KShort);
  libmytest_ohos_KShort (*getNonNullValueOfShort)(libmytest_ohos_kref_kotlin_Short);
  libmytest_ohos_kref_kotlin_Int (*createNullableInt)(libmytest_ohos_KInt);
  libmytest_ohos_KInt (*getNonNullValueOfInt)(libmytest_ohos_kref_kotlin_Int);
  libmytest_ohos_kref_kotlin_Long (*createNullableLong)(libmytest_ohos_KLong);
  libmytest_ohos_KLong (*getNonNullValueOfLong)(libmytest_ohos_kref_kotlin_Long);
  libmytest_ohos_kref_kotlin_Float (*createNullableFloat)(libmytest_ohos_KFloat);
  libmytest_ohos_KFloat (*getNonNullValueOfFloat)(libmytest_ohos_kref_kotlin_Float);
  libmytest_ohos_kref_kotlin_Double (*createNullableDouble)(libmytest_ohos_KDouble);
  libmytest_ohos_KDouble (*getNonNullValueOfDouble)(libmytest_ohos_kref_kotlin_Double);
  libmytest_ohos_kref_kotlin_Char (*createNullableChar)(libmytest_ohos_KChar);
  libmytest_ohos_KChar (*getNonNullValueOfChar)(libmytest_ohos_kref_kotlin_Char);
  libmytest_ohos_kref_kotlin_Boolean (*createNullableBoolean)(libmytest_ohos_KBoolean);
  libmytest_ohos_KBoolean (*getNonNullValueOfBoolean)(libmytest_ohos_kref_kotlin_Boolean);
  libmytest_ohos_kref_kotlin_Unit (*createNullableUnit)(void);
  libmytest_ohos_kref_kotlin_UByte (*createNullableUByte)(libmytest_ohos_KUByte);
  libmytest_ohos_KUByte (*getNonNullValueOfUByte)(libmytest_ohos_kref_kotlin_UByte);
  libmytest_ohos_kref_kotlin_UShort (*createNullableUShort)(libmytest_ohos_KUShort);
  libmytest_ohos_KUShort (*getNonNullValueOfUShort)(libmytest_ohos_kref_kotlin_UShort);
  libmytest_ohos_kref_kotlin_UInt (*createNullableUInt)(libmytest_ohos_KUInt);
  libmytest_ohos_KUInt (*getNonNullValueOfUInt)(libmytest_ohos_kref_kotlin_UInt);
  libmytest_ohos_kref_kotlin_ULong (*createNullableULong)(libmytest_ohos_KULong);
  libmytest_ohos_KULong (*getNonNullValueOfULong)(libmytest_ohos_kref_kotlin_ULong);

  /* User functions. */
  struct {
    struct {
      struct {
        struct {
          struct {
            struct {
              libmytest_ohos_KType* (*_type)(void);
              libmytest_ohos_kref_com_example_kotlin_library_Person (*Person)();
            } Person;
            struct {
              libmytest_ohos_KType* (*_type)(void);
              libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult (*ImageDecodeResult)(libmytest_ohos_KLong handle, libmytest_ohos_KBoolean isValid);
              libmytest_ohos_KLong (*get_handle)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
              libmytest_ohos_KBoolean (*get_isValid)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
              libmytest_ohos_KLong (*component1)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
              libmytest_ohos_KBoolean (*component2)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
              libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult (*copy)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz, libmytest_ohos_KLong handle, libmytest_ohos_KBoolean isValid);
              libmytest_ohos_KBoolean (*equals)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz, libmytest_ohos_kref_kotlin_Any other);
              libmytest_ohos_KInt (*hashCode)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
              const char* (*toString)(libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult thiz);
            } ImageDecodeResult;
            struct {
              libmytest_ohos_KType* (*_type)(void);
              libmytest_ohos_KInt (*get_age)(libmytest_ohos_kref_com_example_kotlin_library_PersonInfo thiz);
              const char* (*get_name)(libmytest_ohos_kref_com_example_kotlin_library_PersonInfo thiz);
            } PersonInfo;
            struct {
              libmytest_ohos_KType* (*_type)(void);
              libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory (*_instance)();
              libmytest_ohos_kref_com_example_kotlin_library_ImageDecodeResult (*decode)(libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory thiz, const char* filePath, libmytest_ohos_KFloat width, libmytest_ohos_KFloat height);
              void (*release)(libmytest_ohos_kref_com_example_kotlin_library_AnimatedImageDecoderFactory thiz, libmytest_ohos_KLong handle);
            } AnimatedImageDecoderFactory;
          } kotlin_library;
        } example;
      } com;
    } root;
  } kotlin;
} libmytest_ohos_ExportedSymbols;
extern libmytest_ohos_ExportedSymbols* libmytest_ohos_symbols(void);
#ifdef __cplusplus
}  /* extern "C" */
#endif
#endif  /* KONAN_LIBMYTEST_OHOS_H */
